import os

import pysftp


def upload_to_sftp():
    # SFTP连接配置 - 请替换为实际值
    sftp_config = {
        "host": "laprairie.ftpstream.com",
        "port": 22,
        "username": "lianwei",  # 格式: <容器名>.<用户名>
        "password": "ZdSJZMp4j6aP6Sr!",  # 或使用私钥
        "remote_path": "/test/order"  # SFTP目标路径
    }

    # 创建不验证主机密钥的连接选项
    cnopts = pysftp.CnOpts()
    cnopts.hostkeys = None  # 禁用主机密钥验证

    try:
        # 连接SFTP (使用密钥示例: pysftp.Connection(..., private_key="path/to/key"))
        with pysftp.Connection(
                host=sftp_config["host"],
                port=sftp_config["port"],
                username=sftp_config["username"],
                password=sftp_config["password"],
                cnopts=cnopts  # 使用自定义连接选项
        ) as sftp:
            #删除指定备份文件
            delete_file(sftp)
            # 切换到远程目录
            sftp.chdir(sftp_config["remote_path"])
            # 上传文件
            sftp.put("LP_Order_2000_02_02.csv")
            remote_file = f"{sftp_config['remote_path']}/{os.path.basename('LP_Order_2000_02_02.csv')}"
            sftp.put("LP_Order_Item_2000_02_02.csv")
            remote_files = f"{sftp_config['remote_path']}/{os.path.basename('LP_Order_Item_2000_02_02.csv')}"
            print(f"文件已上传至SFTP: {remote_file}")
            print(f"文件已上传至SFTP: {remote_files}")
            return remote_file
    except Exception as e:
        print(f"SFTP上传失败: {str(e)}")
        return None

def delete_file(sftp):
    # 切换到远程目录
    sftp.chdir("/test/bk")

    file_pattern = "*2000_02_02.csv"

    # 查找匹配的文件
    matching_files = [f for f in sftp.listdir() if f.endswith("2000_02_02.csv")]

    if not matching_files:
        print(f"未找到匹配 '{file_pattern}' 的文件")
        return

    print(f"找到 {len(matching_files)} 个匹配 '{file_pattern}' 的文件:")

    # 处理每个文件
    deleted_count = 0
    for file_path in matching_files:
        try:
            dry_run = False  # 设置为 False 以启用实际删除
            if dry_run:
                print(f"[模拟] 将删除: {file_path}")
            else:
                sftp.remove(file_path)
                print(f"已删除: {file_path}")
                deleted_count += 1
        except Exception as e:
            print(f"删除失败 '{file_path}': {str(e)}")
